<template>
	<form-item-wrapper :designer="designer" :field="field" :rules="rules" :design-state="designState"
					   :parent-widget="parentWidget" :parent-list="parentList" :index-of-parent-list="indexOfParentList"
					   :style="field.options.customStyle"
					   :sub-form-row-index="subFormRowIndex" :sub-form-col-index="subFormColIndex"
					   :sub-form-row-id="subFormRowId">
		<div :class="[!!field.options.autoFullWidth ? 'auto-full-width' : '']">
			<el-date-picker ref="fieldEditor" :type="field.options.type" v-model="fieldModel"
							:readonly="field.options.readonly" :disabled="field.options.disabled"
							:size="widgetSize"
							:clearable="field.options.clearable" :editable="field.options.editable"
							:format="field.options.format" :value-format="field.options.valueFormat"
							:placeholder="field.options.placeholder || $t('render.hint.datePlaceholder')"
							@focus="handleFocusCustomEvent" @blur="handleBlurCustomEvent"
							@change="handleChangeEvent">
			</el-date-picker>
		</div>
	</form-item-wrapper>
</template>

<script>
import FormItemWrapper from './form-item-wrapper'
import emitter from '@/utils/emitter'
import fieldMixin from "@/components/designer/form-designer/form-widget/field-widget/fieldMixin";

export default {
	name: "date-widget",
	componentName: 'FieldWidget',  //必须固定为FieldWidget，用于接收父级组件的broadcast事件
	mixins: [emitter, fieldMixin],
	props: {
		field: Object,
		parentWidget: Object,
		parentList: Array,
		indexOfParentList: Number,
		designer: Object,

		designState: {
			type: Boolean,
			default: false
		},

		subFormRowIndex: { /* 子表单组件行索引，从0开始计数 */
			type: Number,
			default: -1
		},
		subFormColIndex: { /* 子表单组件列索引，从0开始计数 */
			type: Number,
			default: -1
		},
		subFormRowId: { /* 子表单组件行Id，唯一id且不可变 */
			type: String,
			default: ''
		},

	},
	components: {
		FormItemWrapper,
	},
	data() {
		return {
			oldFieldValue: null, //field组件change之前的值
			fieldModel: null,
			rules: [],
		}
	},
	watch: {
		"fieldModel": {
			handler(val) {
				this.handleChangeEvent(val)
			}
		},
	},
	computed: {},
	beforeCreate() {
		/* 这里不能访问方法和属性！！ */
	},

	created() {
		/* 注意：子组件mounted在父组件created之后、父组件mounted之前触发，故子组件mounted需要用到的prop
		   需要在父组件created中初始化！！ */
		this.initFieldModel()
		this.registerToRefList()
		this.initEventHandler()
		this.buildFieldRules()

		this.handleOnCreated()
	},

	mounted() {
		this.handleOnMounted()
	},

	beforeUnmount() {
		this.unregisterFromRefList()
	},

	methods: {}
}
</script>


<style lang="scss" scoped>
@import "../../../../../assets/formdesigner/styles/global.scss"; /* form-item-wrapper已引入，还需要重复引入吗？ */

.full-width-input {
	width: 100% !important;
}

.auto-full-width {
	width: 100%;

	:deep(.el-date-editor) {
		width: 100% !important;
	}
}

</style>
